package mybox.engine;

import java.io.IOException;

import mybox.engine.servo.Servo;
import mybox.engine.servo.ServoKorpus;
import mybox.engine.servo.ServoRudder;


public class DoppelGelenk implements Figur, GelenkKugel{
	
	public static final String  versionNo="2.0";	
	File4Qcad file4qcad ;		
	double materialDicke=4;	
	double zinkungsFaktor=1;
	double laserBreite=0.03;
			
	//QVector lowerLeftEcke;
	
	
	
	Schachtel servoBox;
	Servo     servo;
	
	QVector drawPos;
	QVector korpusOffset;
	
	Schachtel gegenBox;
	
	
	Servo elvServo;
	QVector elvKorpusOffset;
	Schachtel elvBox;
	
	
	
	public DoppelGelenk(File4Qcad file4qcad, 
			QVector drawPos, 
			double materialDicke, 
			double zinkungsFaktor,
			double laserBreite, String type) 
	throws SecurityException, IOException {
		this.file4qcad=file4qcad;
		this.materialDicke=materialDicke;
		this.zinkungsFaktor=zinkungsFaktor;
		this.laserBreite=laserBreite;
		this.drawPos = new QVector(drawPos.x, drawPos.y);
		
		servo = new Servo(file4qcad, new QVector(0,0), type,materialDicke,zinkungsFaktor,laserBreite);
		
		servoBox = new Schachtel(file4qcad, 
				drawPos,
				servo.korpus.boxInnenLaenge+2*materialDicke,
				servo.korpus.boxInnenBreite+2*materialDicke,
				servo.korpus.boxInnenHoehe+2*materialDicke,
				materialDicke,zinkungsFaktor,laserBreite);
		
		servo.korpus.positionIntoServoBox(servoBox, ServoKorpus.intoGrundplatte);
		
		gegenBox = new Schachtel(
						file4qcad,
						new QVector(0,-(servoBox.hoehe+servoBox.breite+6*materialDicke)),
						servoBox.laenge,
						servoBox.hoehe,
						servoBox.hoehe+servo.korpus.servoProtruding+(3*materialDicke),
						servo.korpus.gegenAchseRadius+
						servo.korpus.diagFromRudderCenter+
						servo.rudder.length+servo.rudder.extraMargin,
						materialDicke,
						laserBreite						
				);
						
		servo.rudder.positionIntoGegenBox(gegenBox,servo.korpus);
		
		elvServo = new Servo(file4qcad, new QVector(0,0), type, materialDicke, zinkungsFaktor,laserBreite);
		elvServo.korpus.positionIntoServoBox(gegenBox,ServoKorpus.intoLaengenPlatte);
		
		elvBox = new Schachtel(
				      file4qcad,
				      new QVector(0,-(servoBox.hoehe+servoBox.breite+6*materialDicke+gegenBox.hoehe+gegenBox.breite+6*materialDicke)),
					  30,
					  servoBox.hoehe,
					  gegenBox.hoehe+servo.korpus.servoProtruding+(3*materialDicke),
					  elvServo.korpus.gegenAchseRadius+
					  elvServo.korpus.diagFromRudderCenter+
					  elvServo.rudder.length+servo.rudder.extraMargin+20,
					  materialDicke,
					  laserBreite					  
				 );
		
		
		elvServo.rudder.positionIntoGegenBox(elvBox, elvServo.korpus);
		
				
	}
	
	
	public void draw() {
		
		
		servoBox.draw();	
		servo.korpus.draw();
		servo.korpus.drawRudderHoleAtBox(servo.rudder);
		servo.korpus.drawGegenAchse();
		servoBox.drawServoJamaica();				
		
		gegenBox.draw();
		gegenBox.drawGegenServoJamaica();
		servo.rudder.draw();
		elvServo.korpus.draw();
		elvServo.korpus.drawRudderHoleAtBox(elvServo.rudder);
		elvServo.korpus.drawGegenAchse();
		
		
		elvBox.draw();
		elvServo.rudder.draw();
		
	}
	
	
	
	public ServoRudder getRudder() {
		return servo.rudder;
	}
	
	public double getLichteWeite() {
		return servoBox.hoehe+servo.servoProtruding+2*materialDicke;
	}
	
	public double getAchsenDiag() {
		return 0;
	}
	
	public double getGegenAchsRadius() {		
		return 0;		
	}
	
	
	
	
}
